/**
 * Sinon externs
 */
function sinon(){}

sinon.stub = function(){};
sinon.spy = function(){};
sinon.mock = function(){};
sinon.useFakeTimers = function(){};
sinon.clock.tick = function(){};

Function.prototype.alwaysCalledOn = function(){};
Function.prototype.alwaysCalledWith = function(){};
Function.prototype.alwaysCalledWithExactly = function(){};
Function.prototype.alwaysCalledWithMatch = function(){};
Function.prototype.alwaysCalledWithNew = function(){};
Function.prototype.alwaysReturned = function(){};
Function.prototype.alwaysThrew = function(){};
Function.prototype.args;
Function.prototype.arguments;
Function.prototype.behaviors;
Function.prototype.callArg = function(){};
Function.prototype.callArgOn = function(){};
Function.prototype.callArgOnWith = function(){};
Function.prototype.callArgWith = function(){};
Function.prototype.callCount;
Function.prototype.callIds;
Function.prototype.called;
Function.prototype.calledAfter = function(){};
Function.prototype.calledBefore = function(){};
Function.prototype.calledOn = function(){};
Function.prototype.calledOnce;
Function.prototype.calledThrice;
Function.prototype.calledTwice;
Function.prototype.calledWith = function(){};
Function.prototype.calledWithExactly = function(){};
Function.prototype.calledWithMatch = function(){};
Function.prototype.calledWithNew = function(){};
Function.prototype.caller;
Function.prototype.callsArg = function(){};
Function.prototype.callsArgAsync = function(){};
Function.prototype.callsArgOn = function(){};
Function.prototype.callsArgOnAsync = function(){};
Function.prototype.callsArgOnWith = function(){};
Function.prototype.callsArgOnWithAsync = function(){};
Function.prototype.callsArgWith = function(){};
Function.prototype.callsArgWithAsync = function(){};
Function.prototype.create = function(){};
Function.prototype.defaultBehavior;
Function.prototype.displayName;
Function.prototype.exceptions;
Function.prototype.firstCall;
Function.prototype.formatters;
Function.prototype.func;
Function.prototype.getCall = function(){};
Function.prototype.getCalls = function(){};
Function.prototype.id;
Function.prototype.invoke = function(){};
Function.prototype.invokeCallback = function(){};
Function.prototype.isPresent = function(){};
Function.prototype.lastCall;
Function.prototype.length;
Function.prototype.matches = function(){};
Function.prototype.name;
Function.prototype.neverCalledWith = function(){};
Function.prototype.neverCalledWithMatch = function(){};
Function.prototype.notCalled;
Function.prototype.onCall = function(){};
Function.prototype.onFirstCall = function(){};
Function.prototype.onSecondCall = function(){};
Function.prototype.onThirdCall = function(){};
Function.prototype.printf = function(){};
Function.prototype.reset = function(){};
Function.prototype.resetBehavior = function(){};
Function.prototype.restore = function(){};
Function.prototype.returnValues;
Function.prototype.returned = function(){};
Function.prototype.returns = function(){};
Function.prototype.returnsArg = function(){};
Function.prototype.returnsThis = function(){};
Function.prototype.secondCall;
Function.prototype.spyCall;
Function.prototype.thirdCall;
Function.prototype.thisValues;
Function.prototype.threw = function(){};
Function.prototype['throws'] = function(){};
Function.prototype.throwsException = function(){};
Function.prototype.toString = function(){};
Function.prototype.withArgs = function(){};
Function.prototype.yield = function(){};
Function.prototype.yieldOn = function(){};
Function.prototype.yieldTo = function(){};
Function.prototype.yieldToOn = function(){};
Function.prototype.yields = function(){};
Function.prototype.yieldsAsync = function(){};
Function.prototype.yieldsOn = function(){};
Function.prototype.yieldsOnAsync = function(){};
Function.prototype.yieldsTo = function(){};
Function.prototype.yieldsToAsync = function(){};
Function.prototype.yieldsToOn = function(){};
Function.prototype.yieldsToOnAsync = function(){};
